package com.own.demo.lwf.common.Enum;

public class ErrorNoEnumDemo {
    /*
         一、枚举的优点：
         1 增强代码可读性：

         枚举可以让你代码看起来很舒服，而且常量统一管理起来，当项目很大的时候很容易管理。

         2 传递参数错误：

         可以减少参数传递的错误性

         3 去除equals两者判断

         由于常量值地址唯一，使用枚举可以直接通过“==”进行两个值之间的对比，性能会有所提高。

         4 编译优势（与常量类相比）

         常量类编译时，常量被直接编译进二进制代码中，常量值在升级中变化后，需要重新编译引用常量的类，因为二进制代码中存放的是旧值。

         枚举类编译时，没有把常量值编译到代码中，即使常量值发生改变，也不会影响引用常量的类。

         5 修改优势（与常量类相比）

         枚举类编译后默认final class，不允许继承可防止被子类修改。常量类可被继承修改、增加字段等，易导致父类不兼容。

         6 枚举型可直接与数据库交互

         7 Switch语句优势

         使用int、String类型switch时，当出现参数不确定的情况，偶尔会出现越界的现象，这样我们就需要做容错操作（if条件筛选等），使用枚举，编译期间限定类型，不允许发生越界。

         二、枚举的特性
         不能被继承

         java 不能使用 = 赋值

         enum 可以通过方法显示赋值

         enum 可以添加普通方法、静态方法、抽象方法、构造方法

         枚举可以实现接口
         三、使用场景
          1、作为普通的常量使用：

         如 星期、季节、颜色、城市 等等；通常配合 switch 语句使用。

          2、往枚举中添加变量：

         构造函数、以达到灵活获取指定值的目的。

         3、通常用于一些业务系统中定义一些固定值：

         如用于匹配数据库中的字段值等。在平时数据库表的设计中，我们一般以数字来代表一些常量，那么在 java 中就可以通过枚举来将数据库字段的数值和所代表的常量对应起来。

         4、往枚举中添加自己特定方法：

         以实现自己所需的相关业务逻辑。比如：可以通过状态码获得对应的状态码信息。

         强烈建议当你需要定义一组常量时，使用枚举类型。

         尽量不要使用枚举的高级特性，事实上高级特性都可以使用普通类来实现，没有必要引入复杂性！
         在项目中一般都是通过枚举来定义常量数据字典。

 */

    public static void main(String[] args) {
        System.out.println(ErrorNoEnum.ERR_CEP_BIC);
        System.out.println(ErrorNoEnum.getMsg(1000001));
    }
}
